oracle

推荐列表 站点导航

当前位置:首页 > 数据库 > oracle >

oracle join on 数据过滤问题

来源:网络整理  作者:网络  发布时间:2020-12-12 02:41
因为在FOR .. IN () LOOP 游标中使用 所以不能采用下面的查询语句做游标...
and gu.f_lotid=rec_viplotplay.f_lotid
oracle 不懂先把数据给过滤掉然后在来连接吗? 太笨了!而且这样把符合条件的数据也过滤掉了 left join
HASH UNIQUE




and vu.f_username is null

NESTED LOOPS OUTER
where b.f_username is null
TABLE ACCESS FULL Object name=T_BASE_VIP_CUSTOMES
FILTER

复制代码 代码如下:

采用下面的语句 只能查出部分用户
and ((vu.f_lotid is null ) or (vu.f_lotid=rec_viplotplay.f_lotid))

and gu.f_playid=rec_viplotPlay.f_Playid
SELECT STATEMENT, GOAL = ALL_ROWS
TABLE ACCESS FULL Object name=T_BASE_VIP_CUSTOMES
select
and gu.f_paymoney>=1500

复制代码 代码如下:


SELECT /*+parallel(gu,4)*/distinct gu.f_username
SELECT /*+parallel(gu,4)*/distinct gu.f_username

INDEX RANGE SCAN Object name=IX_BASE_PROUSER_LOWEX
FAST DUAL


and ((vu.f_condtionid is null ) or (vu.f_condtionid=rec_viplotPlay.F_CondtionID))
and ((vu.f_passeddate is null ) or (vu.f_passeddate > trunc(sysdate,'Y') ))
on A.f_username=B.f_usernam
and ((vu.f_playid is null ) or (vu.f_playid=4))
gu.f_expectenddate > (select trunc(sysdate,'Y')FROM DUAL)
and ((vu.f_playid is null ) or (vu.f_playid=rec_viplotPlay.f_Playid))


VIEW
TABLE ACCESS BY GLOBAL INDEX ROWID Object name=T_BASE_SUCCPROUSER
where gu.f_expectenddate > (select trunc(sysdate,'Y')FROM DUAL)
PARTITION RANGE ALL
VIEW
HASH UNIQUE
and ((vu.f_passeddate is null ) or (vu.f_passeddate > trunc(sysdate,'Y') ))
SELECT STATEMENT, GOAL = ALL_ROWS
FAST DUAL
FILTER
and gu.f_playid=rec_viplotPlay.f_Playid
from
SELECT /*+parallel(gu,4)*/distinct gu.f_username
and gu.f_paymoney>=rec_viplotPlay.F_Conditon_ValuesA
and ((vu.f_condtionid is null ) or (vu.f_condtionid=3))
and ((vu.f_playid is null ) or (vu.f_playid=rec_viplotPlay.f_Playid))
(
and gu.f_lotid=1
and ((vu.f_condtionid is null ) or (vu.f_condtionid=rec_viplotPlay.F_CondtionID))
NESTED LOOPS OUTER
TABLE ACCESS FULL Object name=T_BASE_SUCCPROUSER
)B
FROM t_base_succprouser gu
FROM t_base_succprouser gu
(
and gu.f_paymoney>=rec_viplotPlay.F_Conditon_ValuesA
) A
FROM t_base_succprouser gu

复制代码 代码如下:

后来改成了下面就能全部查出来了
执行计划:
执行计划:
left join t_base_vip_customes VU on gu.f_username=vu.f_username
and ((vu.f_passeddate is null ) or (vu.f_passeddate > trunc(sysdate,'Y') ))
and gu.f_playid=4
and ((vu.f_lotid is null ) or (vu.f_lotid=rec_viplotplay.f_lotid))

select a.f_username
and vu.f_username is null
and gu.f_lotid=rec_viplotplay.f_lotid

复制代码 代码如下:

from t_base_vip_customes
left join t_base_vip_customes VU on gu.f_username=vu.f_username
and ((vu.f_lotid is null ) or (vu.f_lotid=1))
where gu.f_expectenddate > (select trunc(sysdate,'Y')FROM DUAL)

相关热词: oracle

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://v30.fanwenzhu.com/sql/oracle/2768.shtml

Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

oracle join on 数据过滤问题

2020-12-12 编辑:网络

and gu.f_lotid=rec_viplotplay.f_lotid
oracle 不懂先把数据给过滤掉然后在来连接吗? 太笨了!而且这样把符合条件的数据也过滤掉了 left join
HASH UNIQUE




and vu.f_username is null

NESTED LOOPS OUTER
where b.f_username is null
TABLE ACCESS FULL Object name=T_BASE_VIP_CUSTOMES
FILTER

复制代码 代码如下:

采用下面的语句 只能查出部分用户
and ((vu.f_lotid is null ) or (vu.f_lotid=rec_viplotplay.f_lotid))

and gu.f_playid=rec_viplotPlay.f_Playid
SELECT STATEMENT, GOAL = ALL_ROWS
TABLE ACCESS FULL Object name=T_BASE_VIP_CUSTOMES
select
and gu.f_paymoney>=1500

复制代码 代码如下:


SELECT /*+parallel(gu,4)*/distinct gu.f_username
SELECT /*+parallel(gu,4)*/distinct gu.f_username

INDEX RANGE SCAN Object name=IX_BASE_PROUSER_LOWEX
FAST DUAL


and ((vu.f_condtionid is null ) or (vu.f_condtionid=rec_viplotPlay.F_CondtionID))
and ((vu.f_passeddate is null ) or (vu.f_passeddate > trunc(sysdate,'Y') ))
on A.f_username=B.f_usernam
and ((vu.f_playid is null ) or (vu.f_playid=4))
gu.f_expectenddate > (select trunc(sysdate,'Y')FROM DUAL)
and ((vu.f_playid is null ) or (vu.f_playid=rec_viplotPlay.f_Playid))


VIEW
TABLE ACCESS BY GLOBAL INDEX ROWID Object name=T_BASE_SUCCPROUSER
where gu.f_expectenddate > (select trunc(sysdate,'Y')FROM DUAL)
PARTITION RANGE ALL
VIEW
HASH UNIQUE
and ((vu.f_passeddate is null ) or (vu.f_passeddate > trunc(sysdate,'Y') ))
SELECT STATEMENT, GOAL = ALL_ROWS
FAST DUAL
FILTER
and gu.f_playid=rec_viplotPlay.f_Playid
from
SELECT /*+parallel(gu,4)*/distinct gu.f_username
and gu.f_paymoney>=rec_viplotPlay.F_Conditon_ValuesA
and ((vu.f_condtionid is null ) or (vu.f_condtionid=3))
and ((vu.f_playid is null ) or (vu.f_playid=rec_viplotPlay.f_Playid))
(
and gu.f_lotid=1
and ((vu.f_condtionid is null ) or (vu.f_condtionid=rec_viplotPlay.F_CondtionID))
NESTED LOOPS OUTER
TABLE ACCESS FULL Object name=T_BASE_SUCCPROUSER
)B
FROM t_base_succprouser gu
FROM t_base_succprouser gu
(
and gu.f_paymoney>=rec_viplotPlay.F_Conditon_ValuesA
) A
FROM t_base_succprouser gu

复制代码 代码如下:

后来改成了下面就能全部查出来了
执行计划:
执行计划:
left join t_base_vip_customes VU on gu.f_username=vu.f_username
and ((vu.f_passeddate is null ) or (vu.f_passeddate > trunc(sysdate,'Y') ))
and gu.f_playid=4
and ((vu.f_lotid is null ) or (vu.f_lotid=rec_viplotplay.f_lotid))

select a.f_username
and vu.f_username is null
and gu.f_lotid=rec_viplotplay.f_lotid

复制代码 代码如下:

from t_base_vip_customes
left join t_base_vip_customes VU on gu.f_username=vu.f_username
and ((vu.f_lotid is null ) or (vu.f_lotid=1))
where gu.f_expectenddate > (select trunc(sysdate,'Y')FROM DUAL)

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://v30.fanwenzhu.com/sql/oracle/2768.shtml

相关文章

风云图片

推荐阅读

返回oracle频道首页